package com.rybbaby.tss.tasks.core.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @description 日期格式化工具
 * 
 * @author 谢进伟
 * 
 * @createDate 2016年12月22日 下午5:00:09
 */
public class DateUtil {
	
	private static SimpleDateFormat sdf = new SimpleDateFormat();
	
	/**
	 * 按指定的格式来格式化指定的日期
	 * 
	 * @param date
	 *            需要被格式化的日期
	 * @param pattern
	 *            日期格式
	 * @return
	 */
	public static String format(Date date , String pattern) {
		sdf.applyLocalizedPattern(pattern);
		return sdf.format(date);
	}
	
	/**
	 * 按指定的格式来格式化当前日期
	 * 
	 * @param pattern
	 *            日期格式
	 * @return
	 */
	public static String format(String pattern) {
		return format(new Date() , pattern);
	}
	
	/**
	 * 添加或减去指定的时间给定的日历字段,基于日历的规则。例如,要从当前时间减去5天的日历,你可以实现它通过调用: <br>
	 * Date date=new Date();<br>
	 * DateUtil.add(date,Calendar.DAY_OF_MONTH, -5).
	 * 
	 * @param date
	 *            起始日期
	 * @param amount
	 *            日期或时间的量添加到字段。
	 * @param field
	 *            日历字段
	 * @return
	 */
	public static Date add(Date date , int amount , int field) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(field , amount);
		return calendar.getTime();
	}
	
	/**
	 * 添加或减去当前时间给定的日历字段,基于日历的规则。例如,要从当前时间减去5天的日历,你可以实现它通过调用: <br>
	 * DateUtil.add(Calendar.DAY_OF_MONTH, -5).
	 * 
	 * @param amount
	 *            日期或时间的量添加到字段。
	 * @param field
	 *            日历字段
	 * @return
	 */
	public static Date add(int amount , int field) {
		return add(new Date() , amount , field);
	}
}
